// 脚本开始执行
console.log("popup.js 脚本已加载");

// 按钮点击事件监听器
// 使用立即执行函数确保 DOM 已加载
(function () {
  const startButton = document.getElementById("start");
  const endButton = document.getElementById("end");

  if (startButton) {
    startButton.addEventListener("click", async () => {
      try {
        // 获取当前活动标签页
        const [tab] = await chrome.tabs.query({
          active: true,
          currentWindow: true,
        });
        // 将start函数注入到当前标签页执行
        await chrome.scripting.executeScript({
          target: { tabId: tab.id },
          function: start,
        });
        console.log("脚本已成功注入到当前标签页");
      } catch (error) {
        console.error("执行脚本时出错:", error);
      }
    });
    console.log("开始执行按钮已绑定");
  } else {
    console.error("未找到 id 为 'start' 的按钮");
  }

  if (endButton) {
    endButton.addEventListener("click", async () => {
      try {
        // 获取当前活动标签页
        const [tab] = await chrome.tabs.query({
          active: true,
          currentWindow: true,
        });
        // 将stop函数注入到当前标签页执行
        await chrome.scripting.executeScript({
          target: { tabId: tab.id },
          function: stop,
        });
        console.log("停止脚本已成功注入到当前标签页");
      } catch (error) {
        console.error("停止脚本时出错:", error);
      }
    });
    console.log("结束执行按钮已绑定");
  } else {
    console.error("未找到 id 为 'end' 的按钮");
  }
})();

// 这个函数将在网页的上下文中执行
function start() {
  // 如果已经运行，先停止之前的执行
  if (
    window.__playSignScriptInterval ||
    window.__playSignScriptVisibilityHandler
  ) {
    stop();
  }

  // 默认每 10 分钟检查一次（单位 ms）
  const DEFAULT_INTERVAL_MS = 10 * 60 * 1000;
  const MAX_PLAY_RATE = 3.8;

  const videoNode = document.querySelector("video");
  if (videoNode) {
    /**播放太快会跳秒 */
    videoNode.playbackRate = MAX_PLAY_RATE;
  }

  // 保存 visibilitychange 事件处理函数，以便后续移除
  const visibilityHandler = () => {
    const video = document.querySelector("video");
    if (video) {
      video.muted = true;
      video.play();
      video.playbackRate = MAX_PLAY_RATE;
    }
  };
  document.addEventListener("visibilitychange", visibilityHandler);
  window.__playSignScriptVisibilityHandler = visibilityHandler;

  // 保存定时器 ID，以便后续清除
  const intervalId = setInterval(() => {
    const btns = document.querySelectorAll(".login-warn-btns .ant-btn");
    const video = document.querySelector("video");
    /** 自动执行签到脚本 */
    if (btns && btns.length > 0) {
      btns[0].click();
      if (video) {
        video.play();
        video.playbackRate = MAX_PLAY_RATE;
      }
    }
  }, DEFAULT_INTERVAL_MS);
  window.__playSignScriptInterval = intervalId;

  console.log("脚本已开始执行");
}

// 停止执行的函数
function stop() {
  // 清除定时器
  if (window.__playSignScriptInterval) {
    clearInterval(window.__playSignScriptInterval);
    window.__playSignScriptInterval = null;
    console.log("定时器已清除");
  }

  // 移除 visibilitychange 事件监听器
  if (window.__playSignScriptVisibilityHandler) {
    document.removeEventListener(
      "visibilitychange",
      window.__playSignScriptVisibilityHandler
    );
    window.__playSignScriptVisibilityHandler = null;
    console.log("visibilitychange 事件监听器已移除");
  }

  // 恢复视频播放速率（可选，根据需求决定是否恢复）
  const video = document.querySelector("video");
  if (video && video.playbackRate !== 1) {
    video.playbackRate = 1;
    console.log("视频播放速率已恢复为 1");
  }

  console.log("脚本已停止执行");
}
